using System;
using System.Collections.Generic;
using System.Text;

namespace MagicAttributeTest.Abilities
{
  public class AttachAbility : ActivatedAbility
  {
    CardCosts AttachCosts = new CardCosts();
    public AttachAbility(string sManaCosts) { AttachCosts.SetManaCosts(sManaCosts); }
    public override string ToString() { return AttachCosts.ToString() + ": Attach Card to target Creature you Control."; }
  }

  public class HasteAbility : StaticAbility
  {
    public HasteAbility() { AbilityName = "Haste"; }
  }
  public class FlyingAbility : StaticAbility
  {
    public FlyingAbility() { AbilityName = "Flying"; }
  }
  public class FirstStrikeAbility : StaticAbility
  {
    public FirstStrikeAbility() { AbilityName = "FirstStrike"; }
  }
  public class DoubleStrikeAbility : StaticAbility
  {
    public DoubleStrikeAbility() { AbilityName = "DoubleStrike"; }
  }
  public class TrampleAbility : StaticAbility
  {
    public TrampleAbility() { AbilityName = "Trample"; }
  }
  public class LifeLinkAbility : StaticAbility
  {
    public LifeLinkAbility() { AbilityName = "LifeLink"; }
  }
  public class ReachAbility : StaticAbility
  {
    public ReachAbility() { AbilityName = "Reach"; }
  }
  public class FearAbility : StaticAbility
  {
    public FearAbility() { AbilityName = "Fear"; }
  }
  public class ShroudAbility : StaticAbility
  {
    public ShroudAbility() { AbilityName = "Shroud"; }
  }

  public class ManaAbility : ActivatedAbility
  {
    Mana ManaSource = new Mana();
    public ManaAbility(string sMana) 
    { 
      ActivationCosts.Add(new SelfTapCosts()); 
      AbilityName = "Mana(" + sMana + ")"; 
      UseStack = false; 
      ManaSource.FromManaString(sMana); 
    }
//    public ManaAbility(char SingleMana) { ActivationCosts.Add(new SelfTapCosts()); AbilityName = "Mana(" + SingleMana + ")"; UseStack = false; ManaSource.FromManaString(SingleMana.ToString()); }
  }

  public class RegenerationAbility : ActivatedAbility
  {
    Mana ManaCosts;
    public RegenerationAbility(Mana manacosts) { ManaCosts = manacosts; }
  }
}
